産業機器を攻撃する標的型マルウェア「スタックスネット」を振り返る(その1)

この記事をシェア

2010年12月、「スタックスネット」がイランの核施設を攻撃した。それから6年の歳月が流れ、スタックスネットの脅威は単に核施設ばかりでなく、発電施設、さらには社会インフラ施設全般にも及んでいると言われている。いま一度この脅威の全貌を振り返る時かもしれない。


この記事は、ESETが運営するマルウェアやセキュリティに関する情報サイト「Welivesecurity」の記事を翻訳したものである。

 

産業機器を攻撃する標的型マルウェア「スタックスネット」を振り返る(その1)

はじめに

ESETでは世界を震撼させた標的型攻撃「スタックスネット」(Stuxnet)について継続的に研究調査を続けている。そのまとめとしてデイヴィッド・ハーレー(David Harley、ESETシニアリサーチフェロー)、アレクサンドル・マトロソフ(Alexander Matrosov)、ユージーン・ロディオノフ(Eugene Rodionov)、ユライ・マルホ(Juraj Malcho)らは、すでに「Stuxnet Under the Microscope」というホワイトペーパー(改訂1.31)を発表している。

本稿では、この内容に基づいて「SCADA」やその他インフラ関連施設・機器が置かれた今日の危機的状況について深く掘り下げた考察を行うというよりも、いったい何が起こったのか、その後何が変わったのか、について考えてみることにする。
 

略号について

本記事における「標的型攻撃」に関連する「略号」は以下の通りである。

・SCADA: 監視制御とデータ収集――調整プロセス

・DCS: 配達制御システム――リアルタイムでのプロセスの制御

・ICS: 産業制御システム

・CNI: 国家の重要インフラ

・RTU: 遠隔端末装置

・PLC: 機械制御装置(別名シーケンサ)――RTUより安価

 

この記事の中では上記の全てではなく、このうちのいくつかに触れる。SCADAのみに焦点を当てているのではないことを強調するとともに、むしろ、不正な行為の標的になる可能性があるのはこうしたインフラ全般だ、という懸念があることをお伝えしたい。

騒動は何だったのか?

2010年、スタックスネットとそのファミリーはセキュリティの世界に激震を起こした。なぜそれほどの注目を浴びたのだろうか。

その並外れた複雑さと技術的な洗練度合

・ゼロデイ攻撃の対象となる脆弱性、もしくは、ほとんど知られていない脆弱性を狙ったエクスプロイトを尋常でないほど豊富に(しかも多様に)備えている。MS10-046、MS10-061、MS10-073、MS10-092(以上はゼロデイ)、MS08-067(パッチ済み)といった脆弱性である(ここではシーメンス(Siemens)社のハード・コーディングされた「パスワード」の脆弱性(CVE-2010-2772 )はリストに挙げていない)。

 

・脆弱性を見つけ出す「タイガーチーム」(セキュリティチームの別名としてよく用いられる)が攻撃対象の実装にアプローチしている。

 

・リアルテック(Realtek)社とJマイクロン(J-Micron)社の(盗まれた)証明書にコモド(Comodo)社の署名があった。しかも、コモド(Comodo)社により偽の証明書が発行された事件の後、動揺が広がり、証明の署名の真偽は繰り返し問題となると指摘されていた(事件当時に予想されたほどの事態には至っていないものの、この問題は未解決のままである)。

 

・本件は標的型攻撃であった。ただし、本稿ではそれを「準標的型」として説明する。いずれにせよ、そのパケット内のデータ(ペイロード)は明らかに非常に特殊な、危険な可能性のあるインストールを意図するものだった。

 

・ICS(産業制御システム)に特有の珍しい言語で書かれていた。また、ハードウェアに特化した不可思議なデータ(ペイロード)を含んでいた。マルウェアの解析者たちが慣れ親しんでいるVisual BasicやDelphiといったプログラム言語とは明らかに異なったものである。そして、それが実行される流れがかなり特殊であったため、何が実際に行われたのかを特定するには、専門家の力をもってしても長い時間を要したのである。

スタックスネットに勝るものはない

マルウェア研究者の間では「0.5」と呼ばれているバージョンは、すでに2005年の初頭より活動していたと目される(シマンテックの調べによる)。セキュリティベンダーが当初それに気付かなかったのは、おそらく最初のバージョンが地理的に限られた1地域にある、ごく1部のマシンに入り込んだだけだったからである。

続いて、2009年のバージョンもまた捕捉の目を逃れてはいたものの、限られた範囲の下で限られた種類の脆弱性を利用しつつ活動していた。MS08-067、MS10-061、MS08-025(win32k.sys!NtUserMessageCall)といった脆弱性である。このバージョンはUSBメモリーの「autorun.inf」を使って広がっていった。こうした攻撃は2016年においてさえ1部のシステムでは有効のままである。

2010年1月には重要なアップグレードが行われた。リアルテック社によって署名された、別のドライバーが付け加えられたのである。そして幾つかの新しい脆弱性がゼロデイ攻撃の対象に加えられた。MS10-046、MS10-061、MS10-073、MS10-092といった脆弱性である。1つの不正なプログラムが幾つものゼロデイ攻撃の能力を備えているなどということはめったに見られるものではない。事態を重く受け止める者が現れる。

スタックスネットに勝るものはない

ここで、それぞれのゼロデイの攻撃の内容を見てみよう。エントリーポイントは多数あり、脆弱性のタイプも多数ある。

・MS10-046
「autorun.inf」ととてもよく似た動作をするが、そうではない。もっと効果的に働く。「autorun.inf」を無効にしても感染が止められないため、パッチが配布されるまでWindows Explorerの機能に制限を設けなければならない)。この脆弱性がマルウェア亜種たちに取り入れられた。いかなる「.LNK」ファイルもWindows Explorerに表示されるときにこの脆弱性を悪用できる。「.LNK」ファイルのアイコンはWindowsのコントロールパネルのファイル(実際にはDLL)からロードされることになる。

 

・MS08-067
共有フォルダーを通じてドロッパーをインストールすることで、ネットワーク上に自分自身を蔓延させる。それは遠隔地のコンピューター内の「c$」と「admin$」といったネットワーク上の共有部分を走査し、そこに「DEFRAG.TMP」という名でドロッパーをインストールする。そして翌日に実行されるようにタスクをスケジュールに組み込む。

 

・(MS10-061)
Windowsの処理順序を整理するスプーラーに存在する、権限を昇格させていく脆弱性。遠隔地のゲストアカウントに「%SYSTEM%」への書き込みを可能とさせる。ファイルとプリンターの共有を有効化したマシンはこの攻撃に対して脆弱となった。

 

・(MS10-073)
sysファイルの中のゼロデイ攻撃プログラムは権限のレベルをSYSTEMにまで昇格させた。その結果、このプログラムは標的となったローカルマシン上で意のままにあらゆるタスクを行わせることができる。そのために、スタックスネットは特別に作られたキーボードのレイアウトファイルをロードして、任意のコードをSYSTEM権限で実行できるようにした。

 

・MS10-092
権限を昇格させるためにタスクスケジューラーのサービスに潜む脆弱性を利用した。実態としては、TDL4 bootkitという形でその攻撃プログラムはしばらくの間生き続けた。TDL4の実装は本質的にスタックスネットのコードと違わない。そのルートキットはシステムで利用可能なインターフェースを用いて正規のタスクを作り出すのである。そしてタスクスケジューラーフォルダ内のファイルから直接そのタスクに対応するxmlスキーマを読み取り、そのファイルを改変してしまう。

マルウェアと関係したMS10-046とその進化

脆弱性MS10-046に集まるハイエナのようなマルウェアたちをいくつか挙げておこう。

SCADAとシーメンス社、そしてスタックスネット

未曽有の災害が日本を襲った日、2011年3月11日の時点で、シーメンス社は24の工場が(原因不明の)感染したシステムを使っていると報告していた。

もっと早い時期に14もしくは15のSCADAシステムを利用している現場でPLC(機械制御装置)が直接に感染に侵されている、とするレポートが発表されていた。こうした攻撃経路を利用することで脅威がその姿を日々はっきりと目の前に現していく一方、この事態は現場への回帰を促すことになった。現場ではネットワークからパソコンなどの機器を切り離す「エアー・ギャップ」という手法が一般的な防御方法として使われており、それに比してアンチウイルスやシステムのアップデート、パッチを当てるといった自動化された技術的な防御方法はあまり役に立たないと目されていたのである。Windows XP SP3以前のバージョンのサポート撤退が現実となって以来、この方法はわずかばかりの好き者のアイデアとばかりは言えなくなった。幾度かの議論を重ねていく中で明らかになったのは、Microsoft社は古いバージョンのWindowsを使っているSCADAユーティリティの延命のためにサポートを終えたシステムにパッチを当てることに躍起にはなっていないということだった。

この攻撃はCVE-2010-2772として分類されるさらなる脆弱性を利用していた。この脆弱性は当該のSCADAシステムでハード・コーディングされたパスワードを使用することに関係している。このパスワードによってローカルユーザーはバックエンドのデータベースにアクセスし、権限を得ることが可能になる。つまり、この脆弱性が意味するのは、パスワードがリバースエンジニアリングを用いて攻撃者にさらされてしまうというだけではなく、もしそのパスワードが変えられてしまえばシステムそのものの操縦が不能になってしまうということなのである。

署名されたドライバーと盗まれた証明書

リアルテック社とJマイクロン社、この両社のコード署名証明書がスタックスネットに利用された。両社ともオフィスを台湾のシンチュー・サイエンス・パーク(Hsinchu Science Park)に構えていた。この事実は物理的な盗難があったことを示唆するのかもしれない。しかし、証明書は別の情報源から買い取られたという可能性もある。

例えば、銀行の証明書に的を絞ったものではあるが、「ゼウス」ボットネットは証明書の窃取で知られている。ファイル「jmidebs.sys」は初期のシステムドライバーとほぼ同じような働きをする。感染したマシン上で走っているプロセスにプログラムを注入するのだ。攻撃者は最初の証明書が暴露されたために彼らの証明書を変えていたかもしれない。もしくは単に別のサイバー攻撃には別の証明書を使っているのかもしれない。いずれにせよ、彼らは利用可能な重要なリソースを持っていることは明らかだ。各部品が簡単に取り換えられるようになっている。モジュラーに基づいた設計構造はマルウェア「スタックスネット」の特徴の1つであるが、これはとても大規模で非常に組織立ったグループの関与をにおわせるものである。

「スタックスネット」(Stuxnet)はどのようなグループが開発していたのか、何が狙いだったのか」につづく

この記事をシェア

業務PCのセキュリティ対策に

サイバーセキュリティ
情報局の最新情報を
チェック!